跳到主要内容
版本:1.7.x

Zh Release Notes

v1.7.0

发布日期

2026 年 4 月 23 日


亮点

本次发布引入了 Datasets SDK 与 CLI,用于管理 OSS 上的基准测试数据集;新增容器根文件系统磁盘限额(基于 Docker storage-opt);重构了 Docker 认证方案,采用沙箱级临时目录隔离凭证。WebSocket 代理的头部转发策略从白名单切换为黑名单以支持自定义头部透传,沙箱容器通过挂载宿主机 zoneinfo 获得完整的 IANA 时区支持。Admin 服务新增 MetaStore 与数据库操作指标用于可观测性。


Datasets

新功能

Datasets SDK 与 CLI

  • 新增: 新增 rock datasets CLI,包含三个子命令:list(按组织/名称/split 浏览数据集)、tasks(枚举指定 split 中的 task ID,支持 --offset/--limit 分页)、upload(批量上传本地 task 目录至 OSS,支持并发度配置与 --overwrite 覆写) (#859#875)

  • 新增OssDatasetRegistry 后端,基于 oss2 SDK 导航 datasets/{org}/{dataset}/{split}/{task_id}/ 键结构,同时支持目录风格与扁平文件风格的 task。OSS 凭证可通过 CLI 参数传入或存储在 config.ini 的 [dataset] 节中 (#859)

  • Task 列表现在同时识别目录 task(来自 prefix_list)和文件 task(来自 object_list),自动去除后缀并去重 (#875)


Sandbox

新功能

容器磁盘限额

  • 支持通过 Docker --storage-opt size=<value> 限制沙箱根目录大小。要求 overlay2 存储驱动 + XFS 文件系统 + prjquota 挂载选项。通过 xfs_quota 对沙箱日志目录设置 XFS project 配额,要求 XFS 文件系统 + prjquota 挂载选项。 (#860)

  • 服务端 RuntimeConfig 通过新增的 disk_limit_rootfs 与 disk_limit_log(均默认为 None)字段可在 rock-{args.env}.yml 中按环境配置沙箱根目录和沙箱日志目录的限额,并支持 Nacos 运行时覆盖 (#860)

沙箱时区支持

  • 新增: 容器现在获得完整的 IANA 时区支持 — ROCK 将宿主机的 zoneinfo 文件(如 /usr/share/zoneinfo/Asia/Shanghai)以只读方式挂载到容器的 /etc/localtime。宿主机缺少对应 zoneinfo 文件时自动跳过并输出警告 (#883)

Admin

MetaStore 与数据库操作指标

  • 新增: 为 SandboxMetaStoreSandboxTable 的 CRUD 操作添加 OpenTelemetry 指标埋点。每个操作(create、get、update、delete、list、batch_get、archive 等)均自动采集 total/success/failure 计数器及响应时间 gauge (#887)

Deployments

Docker 认证重构

  • 移除传统 Docker 认证方案,改用临时目录方案。TempAuthDockerClient 上下文管理器为每个沙箱创建隔离的临时目录,在其中执行 docker --config <tmpdir> login 与镜像拉取,退出时自动清理 — 避免注册表凭证持久化到全局 Docker 配置 (#837)

  • 临时认证目录的基础路径可通过 ROCK_DOCKER_TEMP_AUTH_DIR 环境变量配置,默认使用系统临时目录 (#837)


Proxy

WebSocket Header转发

  • /sandboxes/{id}/proxy/{path:path} 接口支持header转发,所有客户端头部默认转发至上游服务,仅过滤 WebSocket 握手头(sec-websocket-*)、逐跳头(connectionupgradetransfer-encodingcontent-length)及 hostorigin 头部做特殊处理 — 单独提取并作为 WebSocket origin 参数传入,VNC WebSocket 接口关闭该功能,避免超出 QEMU 的 4 KB 头部缓冲区限制(#865)

Bug 修复

  • 修复 auto_clear_time 计算问题:auto_clear_seconds / 60 产生的小数分钟数现通过 math.ceil() 向上取整至至少 1 分钟;同时将进程存活轮询的 wait_interval 限制为小于 auto_clear_seconds,防止沙箱在首次存活检测前被自动清理 (#883)

  • 修复 UV 环境构建:项目文件树现在先复制到可写的 /tmp/rock-build 目录再执行 uv pip install,解决容器内源码只读挂载导致的安装失败 (#857)


测试与 CI

  • 新增 DockerUtil 辅助函数的单元测试(detect_storage_opt_supportis_xfs_pathget_docker_root_dir)及 DockerDeployment 磁盘限额集成测试 (#860)

  • 新增 Docker 临时目录认证方案的集成测试 (#837)

  • 新增 Datasets CLI、客户端、模型及 OSS 注册表的完整单元测试 (#859#875)

  • 数据库连接单元测试与参数优化 (#852)

  • 清理 TS SDK model client 测试中泄漏的定时器 (#839)


迁移说明

  • Docker 认证: 传统 Docker 认证方案已移除。如果此前依赖 ROCK 写入 ~/.docker/config.json 中的持久凭证,请注意 ROCK 现在使用临时目录方案。可通过 ROCK_DOCKER_TEMP_AUTH_DIR 自定义临时目录位置。

  • WebSocket 代理头部: 如果您的下游服务依赖特定的转发头部集合,请注意现在所有非屏蔽头部均会被转发。屏蔽集合包括 hostconnectionupgradesec-websocket-*transfer-encoding 和 content-length

  • 磁盘限额: 磁盘配额为服务端策略 — disk_limit 不在 SandboxStartRequest 中暴露。请通过环境 YAML 或 Nacos 覆盖配置 RuntimeConfig.disk_limit_rootfs / disk_limit_log